package cn.leyaber.hrm.fallback;


import cn.leyaber.hrm.clients.CommonFeignClient;
import cn.leyaber.hrm.util.AjaxResult;
import feign.hystrix.FallbackFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

//降级类
@Component
public class CommonFeignClientFallbackFactory
        implements FallbackFactory<CommonFeignClient> {

    private Logger log = LoggerFactory.getLogger(CommonFeignClientFallbackFactory.class);

    @Override
    public CommonFeignClient create(Throwable throwable) {
        return new CommonFeignClient(){
            @Override
            public AjaxResult set(String key, String value) {
                throwable.printStackTrace();
                log.error("Redis服务不可用[set]");
                return AjaxResult.me().setSuccess(false).setMessage("Redis服务不可用[set]");
            }

            @Override
            public AjaxResult setex(String key, int seconds, String value) {
                throwable.printStackTrace();
                log.error("Redis服务不可用[setex]");
                return AjaxResult.me().setSuccess(false).setMessage("Redis服务不可用[setex]");
            }

            @Override
            public AjaxResult get(String key) {
                throwable.printStackTrace();
                log.error("Redis服务不可用[get]");
                return AjaxResult.me().setSuccess(false).setMessage("Redis服务不可用[get]");
            }

            @Override
            public AjaxResult del(String key) {
                throwable.printStackTrace();
                log.error("Redis服务不可用[del]");
                return AjaxResult.me().setSuccess(false).setMessage("Redis服务不可用[del]");
            }

//            @Override
//            public AjaxResult saveCourse(CourseDoc courseDoc) {
//                throwable.printStackTrace();
//                log.error("ES服务不可用[saveCourse]");
//                return AjaxResult.me().setSuccess(false).setMessage("ES服务不可用[saveCourse]");
//            }
//
//            @Override
//            public AjaxResult queryCourse(CourseQuery courseQuery) {
//                throwable.printStackTrace();
//                log.error("ES服务不可用[saveCourse]");
//                return AjaxResult.me().setSuccess(false).setMessage("ES服务不可用[saveCourse]");
//            }
//
//            @Override
//            public AjaxResult querySax(SaxQuery saxQuery) {
//                throwable.printStackTrace();
//                log.error("ES服务不可用[querySax]");
//                return AjaxResult.me().setSuccess(false).setMessage("S服务不可用[addSax]");
//            }
//
//            @Override
//            public AjaxResult addSax(CourseDoc courseDoc) {
//                throwable.printStackTrace();
//                log.error("ES服务不可用[addSax]");
//                return AjaxResult.me().setSuccess(false).setMessage("S服务不可用[addSax]");
//            }
       };
    }
}
